import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';
import { IPSSearchScheme } from './ipssearch-scheme';
import { IPSSysSearchDoc } from './ipssys-search-doc';
import { IPSSystemModule } from '../system/ipssystem-module';

/**
 *
 * @export
 * @interface IPSSysSearchScheme
 */
export interface IPSSysSearchScheme extends IPSSearchScheme {
  /**
   * 检索文档集合
   *
   * @type {IPSSysSearchDoc[]}
   */
  getAllPSSysSearchDocs(): IPSSysSearchDoc[] | null;

  /**
   * 检索文档集合
   *
   * @type {IPSSysSearchDoc[]}
   */
  get allPSSysSearchDocs(): IPSSysSearchDoc[] | null;

  findPSSysSearchDoc(objKey: any): IPSSysSearchDoc | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;
}
